/*
 * Source code written by Tácio S. Diogo.
 * Email: taciosd@gmail.com
 * Any copy or use without permission is prohibited.
 */
package app.comportamentos;

import app.agentes.Agente;
import app.agentes.Candidato;
import app.agentes.Denunciante;
import app.modelo.Console;
import app.modelo.Denuncia;
import app.modelo.Propaganda;
import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;

/**
 *
 * @author Tácio S. Diogo
 */
public class VerPropaganda extends OneShotBehaviour {
    
    public VerPropaganda(Agent agent) {
        super(agent);
    }
    
    @Override
    public void action() {
        Agente agente = ((Agente)myAgent);
        
        Propaganda propaganda = agente.getPropagandaAtual();
        String tipoPropaganda = propaganda.getTipo().toString();
        Candidato candidato = (Candidato) propaganda.getCandidato();
        String nomeCandidato = candidato.getLocalName();
        Console.escrever(myAgent, "Estou vendo propaganda de: " + tipoPropaganda + " do candidato: " + nomeCandidato);
        
        double fatorReputacao;
        
        if (propaganda.ehPropagandaProibida()) {
            double consciencia = agente.getConscienciaPolitica();
            double fator = Math.random();
            boolean estaRevoltadoComPropaganda = (fator < consciencia);
            
            if (estaRevoltadoComPropaganda) {
                fatorReputacao = -0.6;
                Denuncia denuncia = new Denuncia(candidato, agente, propaganda);
                agente.addBehaviour(new DenunciarPropaganda(agente, denuncia));
          
            } else {
                fatorReputacao = 0.3;
            }
        } else {
            fatorReputacao = 0.1;
        }
        
        agente.atualizarReputacao(candidato.getLocalName(), fatorReputacao);
        agente.setPropagandaAtual(null);
    }
}
